#################################################################################
##                                     自定义                                   #
#################################################################################

# snippet thlink "" w
# endsnippet

snippet thpage "thymeleaf template page" w
<!doctype html>
<html lang="en" class="no-js" xmlns:th="http://www.thymeleaf.org">
<!-- /* ::meta, ::title, ::link, ::style, ::script */ -->
<head th:replace="fragment :: common_head(~{::meta},~{::title},~{::link},~{},~{})">
    <meta charset="UTF-8">
    <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>${1:TITLE}</title>
    <!--tag::引入 css, js[]-->
    <link rel="stylesheet"
        th:href="@{/webjars/html5-boilerplate/6.0.1/dist/css/normalize.css}"
        href="//cdn.jsdelivr.net/webjars/org.webjars.npm/html5-boilerplate/6.0.1/dist/css/normalize.css">
    <link th:href="@{/webjars/font-awesome/5.0.10/web-fonts-with-css/css/fontawesome-all.min.css}" rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.10/css/all.css" integrity="sha384-+d0P83n9kaQMCwj8F4RJB66tzIwOKmrdb46+porD/OvrJ+37WqIM7UoBtwHO6Nlg" crossorigin="anonymous">
    <link th:href="@{/webjars/bootstrap/4.1.0/css/bootstrap.min.css}" href="https://cdn.bootcss.com/bootstrap/4.1.0/css/bootstrap.css" rel="stylesheet">
    <link rel="stylesheet"
        th:href="@{/webjars/html5-boilerplate/6.0.1/dist/css/main.css}"
        href="//cdn.jsdelivr.net/webjars/org.webjars.npm/html5-boilerplate/6.0.1/dist/css/main.css">
    <!--这里加入 app.css -->
    <link rel="stylesheet"  th:href="@{/assets/css/app.css}"
        href="../static/assets/css/app.css">
    <!--end::引入 css, js[]-->
</head>
<body>
<th:block th:replace="fragment :: browser"></th:block>
<header id="header" th:replace="fragment :: header"></header>
<div class="container">
    <div class="row">
        <div class="col-md-12">
			<p th:text="TODO">Todo$0</p>
        </div>
    </div>
</div>
<footer id="footer" th:replace="fragment :: footer"></footer>
<script th:src="@{/webjars/html5-boilerplate/6.0.1/dist/js/vendor/modernizr-3.5.0.min.js}"
        src="//cdn.jsdelivr.net/webjars/org.webjars.npm/html5-boilerplate/6.0.1/dist/js/vendor/modernizr-3.5.0.min.js"></script>
<script th:src="@{/webjars/jquery/3.3.1-1/jquery.js}"
        src="//cdn.jsdelivr.net/webjars/org.webjars/jquery/3.3.1-1/jquery.js"></script>
<script th:src="@{/webjars/html5-boilerplate/6.0.1/dist/js/plugins.js}"
        src="//cdn.jsdelivr.net/webjars/org.webjars.npm/html5-boilerplate/6.0.1/dist/js/plugins.js"></script>
<script th:src="@{/webjars/bootstrap/4.1.0/js/bootstrap.bundle.min.js}"
        src="https://cdn.bootcss.com/bootstrap/4.1.0/js/bootstrap.bundle.js"></script>
<th:block th:replace="fragment :: scriptlib"></th:block>
<!--这里导入自己的 js 文件-->
<script th:src="@{/assets/js/app.js}"
        src="../static/assets/js/app.js"></script>
<script type="text/javascript">
	// 这里写当前页的 js
</script>
</body>
</html>
endsnippet

# w 是什么意思?
snippet thns "thymeleaf ns" w
xmlns:th="http://www.thymeleaf.org"
endsnippet

snippet tht "thymeleaf th:text" w
th:text="\$\{${1:text}\}"
endsnippet

snippet thu "thymeleaf th:utext" w
th:utext="\$\{${1:text}\}"
endsnippet

snippet theach "thymeleaf th:each" w
th:each="$1: \$\{${2:${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}}s\}"
endsnippet

snippet thv "thymeleaf th:value" w
th:value="\$\{${1:text}\}"
endsnippet

snippet thf "thymeleaf th:field" w
th:field="\$\{${1:text}\}"
endsnippet

snippet thh "thymeleaf th:href" w
th:href="@\{/${1:url}\}"
endsnippet
#
snippet ths "thymeleaf th:src" w
th:src="@\{/${1:url}\}"
endsnippet

#snippet a "Link" w
#<a href="${1:http://www.${2:url.com}}"${3: target="_blank"}>${4:Anchor Text}</a>
#endsnippet
#
#
#
#
#
############################################################################
##                            TextMate Snippets                            #
############################################################################
#
#global !p
#def x(snip):
#	if snip.ft.startswith("x"):
#		snip.rv = '/'
#	else:
#		snip.rv = ""
#endglobal
#
#snippet doctype "HTML - 5.0 (doctype)" b
#<!DOCTYPE html>
#
#endsnippet
#
##############
## Shortcuts #
##############
#snippet down "Down (down)"
#&#x2193;
#endsnippet
#
#snippet enter "Enter (enter)"
#&#x2305;
#endsnippet
#
#snippet escape "Escape (escape)"
#&#x238B;
#endsnippet
#
#snippet left "Left (left)"
#&#x2190;
#endsnippet
#
#snippet return "Return (return)"
#&#x21A9;
#endsnippet
#
#snippet right "Right (right)"
#&#x2192;
#endsnippet
#
#snippet shift "Shift (shift)"
#&#x21E7;
#endsnippet
#
#snippet tab "Tab (tab)"
#&#x21E5;
#endsnippet
#
#snippet up "Up (up)"
#&#x2191;
#endsnippet
#
##############
## HTML TAGS #
##############
#snippet a "Link" w
#<a href="${1:http://www.${2:url.com}}"${3: target="_blank"}>${4:Anchor Text}</a>
#endsnippet
#
#snippet abbr "<abbr>" w
#<abbr title="$2">$1</abbr>
#endsnippet
#
#snippet access "accesskey global attribute"
#accesskey="$1"
#endsnippet
#
#snippet address "<address>" w
#<address>$1</address>
#endsnippet
#
#snippet article "<article>"
#<article>
#	${1:article content}
#</article>
#endsnippet
#
#snippet aside "<aside>"
#<aside>
#	${1:aside content}
#</aside>
#endsnippet
#
#snippet b "<b>" w
#<b>$1</b>
#endsnippet
#
#snippet base "HTML <base>" w
#<base href="$1"${2: target="$3"}`!p x(snip)`>
#endsnippet
#
#snippet blockquote "<blockquote>"
#<blockquote>$1</blockquote>
#endsnippet
#
#snippet body "<body>"
#<body>
#	${0:${VISUAL}}
#</body>
#endsnippet
#
#snippet br "<br>" w
#<br>$1</br>
#endsnippet
#
#snippet button "<button>"
#<button>$1</button>
#endsnippet
#
#snippet caption "<caption>"
#<caption>$1</caption>
#endsnippet
#
#snippet cite "<cite>" w
#<cite>$1</cite>
#endsnippet
#
#snippet class "class global attribute"
#class="$1"
#endsnippet
#
#snippet code "<code>" w
#<code>$1</code>
#endsnippet
#
#snippet data "<data>"
#<data value="$2">$1</data>
#endsnippet
#
#snippet datalist "<datalist>"
#<datalist id="$1" name="$2">
#	opt$3
#</datalist>
#endsnippet
#
#snippet dd "<dd>"
#<dd>$1</dd>
#endsnippet
#
#snippet del "<del>" w
#<del cite="$2" datetime="${3:`date '+%Y-%m-%dT%H:%M:%S%:z'`}">$1</del>
#endsnippet
#
#snippet dfn "<dfn>" w
#<dfn>$1</dfn>
#endsnippet
#
#snippet div "<div>" w
#<div>
#	${0:${VISUAL}}
#</div>
#endsnippet
#
#snippet div# "<div> with ID & class" w
#<div`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`>
#	${0:${VISUAL}}
#</div>
#endsnippet
#
#snippet div. "<div> with class" w
#<div`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`>
#	${0:${VISUAL}}
#</div>
#endsnippet
#
#snippet dl "<dl>"
#<dl>
#	${1:Definition list}
#</dl>
#endsnippet
#
#snippet dt "<dt>"
#<dt>$1</dt>
#endsnippet
#
#snippet em "<em>" w
#<em>$1</em>
#endsnippet
#
#snippet fieldset "Fieldset" w
#<fieldset id="${1/[\w\d]+|( )/(?1:_:\L$0\E)/g}" ${2:class="${3:}"}>
#	<legend>$1</legend>
#	${0:${VISUAL}}
#</fieldset>
#endsnippet
#
#snippet fig "<figure>"
#<figure>
#$1
#<figcaption>$2</figcaption>
#</figure>
#endsnippet
#
#snippet figcaption "<figcaption>"
#<figcaption>$1</figcaption>
#endsnippet
#
#snippet footer "<footer>"
#<footer>
#	${1:footer content}
#</footer>
#endsnippet
#
#snippet form "HTML <form>" w
#<form action="${1:`!p
#snip.rv = (snip.basename or 'unnamed') + '_submit'
#`}" method="${2:get}" accept-charset="utf-8">
#	${0:${VISUAL}}
#</form>
#endsnippet
#
#snippet h1 "HTML <h1>" w
#<h1>${0:${VISUAL}}</h1>
#endsnippet
#
#snippet h2 "HTML <h2>" w
#<h2>${0:${VISUAL}}</h2>
#endsnippet
#
#snippet h3 "HTML <h3>" w
#<h3>${0:${VISUAL}}</h3>
#endsnippet
#
#snippet h4 "HTML <h4>" w
#<h4>${0:${VISUAL}}</h4>
#endsnippet
#
#snippet h5 "HTML <h5>" w
#<h5>${0:${VISUAL}}</h5>
#endsnippet
#
#snippet h6 "HTML <h6>" w
#<h6>${0:${VISUAL}}</h6>
#endsnippet
#
#snippet head "HTML <head>"
#<head>
#	<meta charset="utf-8">
#	<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title>
#	${0:${VISUAL}}
#</head>
#endsnippet
#
#snippet header "<header>"
#<header>
#	${1:header content}
#</header>
#endsnippet
#
#snippet hr "<hr>"
#<hr>
#endsnippet
#
#snippet html "HTML basic structure" b
#<!DOCTYPE html>
#<html>
#	<head>
#		<meta charset="UTF-8" />
#		<meta name="viewport" content="width=device-width" />
#		<title>${1:`!p snip.rv = snip.basename.replace('-', ' ').capitalize()`}</title>
#	</head>
#	<body>
#		${0:body}
#	</body>
#</html>
#endsnippet
#
#snippet htmll "HTML basic structure with the lang attribute" b
#<!DOCTYPE html>
#<html lang="${1:es}">
#	<head>
#		<meta charset="UTF-8" />
#		<meta name="viewport" content="width=device-width" />
#		<title>${2:`!p snip.rv = snip.basename.replace('-', ' ').capitalize()`}</title>
#	</head>
#	<body>
#		${0:body}
#	</body>
#</html>
#endsnippet
#
#snippet i "<i>" w
#<i>$1</i>
#endsnippet
#
#snippet id "id global attribute"
#id="$1"
#endsnippet
#
#snippet img "<img>"
#<img src="$1" alt="$2">
#endsnippet
#
#snippet input "Input with Label" w
#<label for="${2:${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}}">$1</label><input type="${3:text/submit/hidden/button}" name="${4:$2}" value="$5"${6: id="${7:$2}"}`!p x(snip)`>
#endsnippet
#
#snippet input "HTML <input>" w
#<input type="${1:text/submit/hidden/button}" name="${2:some_name}" value="$3"${4: id="${5:$2}"}`!p x(snip)`>
#endsnippet
#
#snippet ins "<ins>" w
#<ins cite="$2" datetime="${3:`date '+%Y-%m-%dT%H:%M:%S%:z'`}">$1</ins>
#endsnippet
#
#snippet kbd "<kbd>" w
#<kbd>$1</kbd>
#endsnippet
#
#snippet label "<label>"
#<label>$1</label>
#endsnippet
#
#snippet legend "<legend>"
#<legend>$1</leyend>
#endsnippet
#
#snippet li "list item" w
#<li>${0:${VISUAL}}</li>
#endsnippet
#
#snippet link "HTML <link>" w
#<link rel="${1:stylesheet}" href="${2:/css/master.css}" type="text/css" media="${3:screen}" title="${4:no title}" charset="${5:utf-8}"`!p x(snip)`>
#endsnippet
#
#snippet mailto "HTML <a mailto: >" w
#<a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>
#endsnippet
#
#snippet main "<main>"
#<main>
#	${1:main content}
#</main>
#endsnippet
#
#snippet mark "<mark>"
#<mark>$1</mark>
#endsnippet
#
#snippet meta "HTML <meta>" w
#<meta name="${1:name}" content="${2:content}"`!p x(snip)`>
#endsnippet
#
#snippet meter "<meter>"
#<meter>$1</meter>
#endsnippet
#
#snippet nav "<nav>"
#<nav>
#	${1:navigation links}
#</nav>
#endsnippet
#
#snippet noscript "<noscript>"
#<noscript>$1</noscript>
#endsnippet
#
#snippet ol "<ol>"
#<ol>
#	<li>$1</li>
#</ol>
#endsnippet
#
#snippet optgroup "<optgroup>"
#<optgroup label="$1">
#	opt$2
#</optgroup>
#endsnippet
#
#snippet output "<output>"
#<output for="$1" name="$2">$3</output>
#endsnippet
#
#snippet option "Option" w
#<option${1: value="${2:option}"}>${3:$2}</option>
#endsnippet
#
#snippet p "paragraph" w
#<p>${0:${VISUAL}}</p>
#endsnippet
#
#snippet picture "<picture>"
#<picture>
#	${1:image sources}
#</picture>
#endsnippet
#
#snippet pre "<pre>"
#<pre>$1</pre>
#endsnippet
#
#snippet progress "<progress>"
#<progress>$1</progress>
#endsnippet
#
#snippet q "<q>" w
#<q>$1</q>
#endsnippet
#
#snippet s "<s>" w
#<s>$1</s>
#endsnippet
#
#snippet samp "<samp>" w
#<samp>$1</samp>
#endsnippet
#
#snippet script "HTML <script>" w
#<script charset="utf-8">
#	${0:${VISUAL}}
#</script>
#endsnippet
#
#snippet scriptsrc "HTML <script src...>" w
#<script src="$1" charset="${3:utf-8}"></script>
#endsnippet
#
#snippet select "Select Box" w
#<select name="${1:some_name}" id="${2:$1}"${3:${4: multiple}${5: size="${6:1}"}}>
#	${0:${VISUAL}}
#</select>
#endsnippet
#
#snippet small "<small>" w
#<small>$1</small>
#endsnippet
#
#snippet span "<span>" w
#<span> ${0:${VISUAL}} </span>
#endsnippet
#
#snippet span# "<span> with ID & class" w
#<span`!p snip.rv=' id="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""``!p snip.rv=' class="' if t[2] else ""`${2:name}`!p snip.rv = '"' if t[2] else ""`> ${0:${VISUAL}} </span>
#endsnippet
#
#snippet span. "<span> with class" w
#<span`!p snip.rv=' class="' if t[1] else ""`${1:name}`!p snip.rv = '"' if t[1] else ""`> ${0:${VISUAL}} </span>
#endsnippet
#
#snippet strong "<strong>" w
#<strong>$1</strong>
#endsnippet
#
#snippet style "HTML <style>" w
#<style type="text/css" media="screen">
#	${0:${VISUAL}}
#</style>
#endsnippet
#
#snippet sub "<sub>" w
#<sub>$1</sub>
#endsnippet
#
#snippet sup "<sup>" w
#<sup>$1</sup>
#endsnippet
#
#snippet table "HTML <table>" w
#<table>
#	${0:${VISUAL}}
#</table>
#endsnippet
#
#snippet tbody "<tbody>"
#<tbody>$1</tbody>
#endsnippet
#
#snippet td "table cell" w
#<td>${0:${VISUAL}}</td>
#endsnippet
#
#snippet template "<template>"
#<template id="$1">
#$2
#</template>
#endsnippet
#
#snippet textarea "HTML <textarea>" w
#<textarea name="${1:Name}" rows="${2:8}" cols="${3:40}">$0</textarea>
#endsnippet
#
#snippet tfoot "<tfoot>"
#<tfoot>$1</tfoot>
#endsnippet
#
#snippet th "table header" w
#<th>${0:${VISUAL}}</th>
#endsnippet
#
#snippet thead "<thead>"
#<thead>$1</thead>
#endsnippet
#
#snippet time "<time>" w
#<time datetime="$2">$1</time>
#endsnippet
#
#snippet title "HTML <title>" w
#<title>${1:`!p snip.rv = snip.basename or "Page Title"`}</title>
#endsnippet
#
#snippet tr "table row" w
#<tr>${0:${VISUAL}}</tr>
#endsnippet
#
#snippet ul "unordered list" w
#<ul>
#	${0:${VISUAL}}
#</ul>
#endsnippet
#
#snippet var "<var>" w
#<var>$1</var>
#endsnippet
#
#snippet viewport "Responsive viewport meta" w
#<meta name="viewport" content="width=device-width, initial-scale=1">
#endsnippet
#
#snippet wbr "<wbr>" w
#<wbr>$1</wbr>
#endsnippet
#
## vim:ft=snippets:
